草庐IT

Rust 生命周期

全部标签

c++ - 如何从 C++ 获取 x86_64 中的 CPU 周期数?

我在SO上看到这篇文章,其中包含C代码以获取最新的CPU周期计数:CPUCyclecountbasedprofilinginC/C++Linuxx86_64有没有办法可以在C++中使用此代码(欢迎使用windows和linux解决方案)?虽然是用C编写的(C是C++的子集),但我不太确定这段代码是否可以在C++项目中工作,如果不能,如何翻译?我使用的是x86-64EDIT2:找到了这个函数,但是VS2010无法识别汇编程序。我需要包括任何东西吗?(我相信我必须将uint64_t换成longlongforwindows....?)staticinlineuint64_tget_cycle

c++ - C++ 对象的生命周期是什么?

我是一名经验丰富的C开发人员,刚刚开始接触C++,我必须承认,我很困惑有多少种方法可以创建、保留和销毁C++对象。在C中,生活很简单:在堆栈上分配=拷贝,而malloc/free管理堆上的数据。C++远非如此,至少在我看来是这样。鉴于此,以下是我的问题:所有有哪些方法可以创建C++对象?直接/复制构造函数、赋值等。它们是如何工作的?与所有这些类型的对象创建相关的所有不同的初始化语法是什么?Tf=x、Tf(x);、Tf{x};等有什么区别?最重要的是,何时在C++中复制/分配/无论=是什么都是正确的,您想在什么时候使用指针?在C语言中,我非常习惯于在lot周围抛出指针,因为指针分配很便宜

c++ - 如何使用 C++/Qt/CMake 项目构建 Rust 代码?

我有一个现有的C++/Qtproject用CMake构建。我想开始添加可以从主C++代码库中调用的Rust代码。构建项目的正确方法是什么?当前项目结构:./CMakeLists.txt./subproject-foo/CMakeLists.txt./subproject-foo/src/..../subproject-bar/CmakeLists.txt./subproject-bar/src/..../common/CMakeLists.txt./common/src/...我想添加一个结构相似的common-rust/...目录。我怎样才能把它整合到项目中?

c++ - 生命终结规则的差异?

https://en.cppreference.com/w/cpp/language/lifetime在Notes部分有这段代码,在此转载:structA{int*p;~A(){std::coutNotes部分想要表达什么?据我了解,代码是UB(或者是它),因为很明显n不会超过a。这是什么意思:differenceintheendoflifetimerulesbetweennon-classobjects(endofstorageduration)andclassobjects(reverseorderofconstruction)matters但它并没有说重要如何。我对这整个部分感到

【Rust 日报】2023-1-19 Lars Bergstrom当选为Rust基金会董事会主席

hyper 2022年的回顾hyper在2022年发生了很多事情,本篇博文回顾了这一年以来的一些进展。原文: https://seanmonstar.com/post/706802392260362240/hyper-ish-2022-in-review【公告】创建你自己的zsh模块!你知道ZShell(又名zsh)支持自定义模块吗?不,不是shellscript,是C模块!是的,zshmodule(1)告诉你这个。你的配置上有zmodloadzsh/complist吗?那是一个本地模块!我一直在为一个大学项目研究一种在Rust中定义Zsh模块的方法。目前它处于初始状态,你只能定义自定义命令,

c++ - 与函数指针转换相关的 lambda 对象的生命周期

关注thisanswer我现在想知道lambda的生命周期的规则是什么,以及它与自动转换创建的函数指针的生命周期有何关系。关于lambdas的生命周期有几个问题(例如here和here),在这种情况下,答案是“它们的行为与您自己编写完整的仿函数对象完全一样”,但是两者都没有解决转换为函数指针的问题,这可能非常明智地成为一个特例。我整理了这个小例子来说明我的担忧:#includetypedefint(*func_t)(int);//firstcasefunc_tretFun1(){staticautolambda=[](int){return1;};//automaticallyconv

c++ - C+ +'s concepts and Rust' 的特质有什么异同?

在Rust中,主要的抽象工具是traits。在C++中,有两种抽象工具:抽象类和模板。为了摆脱使用模板的一些缺点(例如难以阅读的错误消息),C++引入了概念,它们是"namedsetsofrequirements".这两个功能似乎非常相似:通过列出要求来定义特征/概念。两者都可用于绑定(bind)/限制泛型/模板类型参数。Rust特征和带有概念的C++模板都是单态的(我知道Rust特征也可以与动态调度一起使用,但那是另一回事)。但据我了解,也存在显着差异。例如,C++的概念似乎定义了一组必须有效的表达式,而不是列出函数签名。但是那里有很多不同且令人困惑的信息(也许是因为概念只出现在C+

c++ - 临时工的生命周期

以下代码可以正常工作,但为什么这是正确的代码?为什么foo()返回的临时的“c_str()”指针有效?我想,当输入bar()时,这个临时文件已经被破坏了——但它似乎不是这样的。所以,现在我假设foo()返回的临时值将在调用bar()后被销毁-这是正确的吗?为什么?std::stringfoo(){std::stringout=something...;returnout;}voidbar(constchar*ccp){//dosomethingwiththestring..}bar(foo().c_str()); 最佳答案 当在词法

c++ - 为什么 const 引用不能延长通过函数传递的临时对象的生命周期?

下面这个简单的例子,为什么ref2不能绑定(bind)到min(x,y+1)的结果上?#includetemplateconstT&min(constT&a,constT&b){returnaliveexample-产生:main:xoreax,eaxret编辑:我认为下面的示例更好地描述了一种情况。#includetemplateconstexprTconst&min(Tconst&a,Tconst&b){returnaliveexample产生::14:38:error:''isnotaconstantexpressionconstexprintconst&ref2=min(x,y

C++:临时参数的生命周期?

当创建一个MyClass的新实例作为函数的参数时,如下所示:classMyClass{MyClass(inta);};myFunction(MyClass(42));标准是否对析构函数的时间做出任何保证?具体来说,我可以假设它会在调用myFunction()之后的下一条语句之前被调用吗? 最佳答案 临时对象在它们所属的完整表达式结束时被销毁。完整表达式是不是某个其他表达式的子表达式的表达式。通常这意味着它在;(或)结束,用于if、while、switch等)表示语句的结束。在您的示例中,这是函数调用的结束。请注意,您可以通过将临时对